home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / COMAL / A-COMAL Series / (k)aao.d64 / grammar.lst < prev    next >
File List  |  2009-01-24  |  5KB  |  236 lines

  1. 0010 // DELETE "GRAMMER"
  2. 0020 // SAVE   "GRAMMER"
  3. 0030 // BY ─ICK ╦LINGENS
  4. 0040 //    ─UTCH ├╧═┴╠ ╒SERS ╟ROUP
  5. 0050 //
  6. 0060 // ╘HIS PROGRAM WAS USED IN SOME
  7. 0070 // LECTURES ON
  8. 0080 //
  9. 0090 //    ├OMPUTATIONAL ╠INGUISTICS
  10. 0100 //
  11. 0110 // GIVEN BY THE AUTHOR
  12. 0120 // (SPRING 1985)
  13. 0130 //
  14. 0140 INFO
  15. 0150 TRAP ESC-
  16. 0160 REPEAT 
  17. 0170  SENTENCE //            PRODUCTION
  18. 0180  PRINT 
  19. 0190  WAIT'KEY
  20. 0200 UNTIL ESC
  21. 0210 PRINT "┼ND OF ╨├╞╟"
  22. 0220 END 
  23. 0230 //
  24. 0240 // *******************************
  25. 0250 // *      SYNTAX DEFINITION      *
  26. 0260 // *******************************
  27. 0270 //
  28. 0280 PROC SENTENCE 
  29. 0290  // <SENTENCE>::=
  30. 0300  //    <SUBJECT><PREDICATE><TERMI-
  31. 0310  //                    NAL SYMBOL>
  32. 0320  SUBJECT
  33. 0330  PREDICATE
  34. 0340  TERM'SYMBOL
  35. 0350 ENDPROC SENTENCE
  36. 0360 //
  37. 0370 PROC SUBJECT 
  38. 0380  // <SUBJECT>::=
  39. 0390  //    [0.7]<SUBST GROUP>▌<PERSO-
  40. 0400  //                 NAL PRONOUN 1>
  41. 0410  IF P(.7) THEN
  42. 0420   SUBSTANTIVE'GROUP
  43. 0430  ELSE 
  44. 0440   PERSONAL'PRONOUN'1
  45. 0450  ENDIF 
  46. 0460 ENDPROC SUBJECT
  47. 0470 //
  48. 0480 PROC SUBSTANTIVE'GROUP 
  49. 0490  // <SUBST GROUP>::=
  50. 0500  //    <ARTICLE><NOUN PHRASE>
  51. 0510  ARTICLE
  52. 0520  NOUN'PHRASE
  53. 0530 ENDPROC SUBSTANTIVE'GROUP
  54. 0540 //
  55. 0550 PROC ARTICLE 
  56. 0560  // <ARTICLE>::=
  57. 0570  //    [0.45] A ▌ THE
  58. 0580  IF P(.45) THEN
  59. 0590   SYMBOL("A")
  60. 0600  ELSE 
  61. 0610   SYMBOL("THE")
  62. 0620  ENDIF 
  63. 0630 ENDPROC ARTICLE
  64. 0640 //
  65. 0650 PROC NOUN'PHRASE 
  66. 0660  // <NOUN PHRASE>::=
  67. 0670  //    [0.25]<ADJECTIVE><NOUN
  68. 0680  //             PHRASE>▌<NOUNPART>
  69. 0690  IF P(.25) THEN
  70. 0700   ADJECTIVE
  71. 0710   NOUN'PHRASE
  72. 0720  ELSE 
  73. 0730   NOUNPART
  74. 0740  ENDIF 
  75. 0750 ENDPROC NOUN'PHRASE
  76. 0760 //
  77. 0770 PROC ADJECTIVE 
  78. 0780  // <ADJECTIVE>::=
  79. 0790  //   [0.3] LITTLE ▌[0.6] MEEK ▌
  80. 0800  //   [0.9] BIG ▌ BAD
  81. 0810  IF P(.3) THEN
  82. 0820   SYMBOL("LITTLE")
  83. 0830  ELIF P(.6) THEN
  84. 0840   SYMBOL("MEEK")
  85. 0850  ELIF P(.9) THEN
  86. 0860   SYMBOL("BIG")
  87. 0870  ELSE 
  88. 0880   SYMBOL("BAD")
  89. 0890  ENDIF 
  90. 0900 ENDPROC ADJECTIVE
  91. 0910 //
  92. 0920 PROC NOUNPART 
  93. 0930  IF P(.25) THEN
  94. 0940   NOUN
  95. 0950   REL'CLAUSE
  96. 0960  ELSE 
  97. 0970   NOUN
  98. 0980  ENDIF 
  99. 0990 ENDPROC NOUNPART
  100. 1000 //
  101. 1010 PROC NOUN 
  102. 1020  IF P(.2) THEN
  103. 1030   SYMBOL("BOY")
  104. 1040  ELIF P(.4) THEN
  105. 1050   SYMBOL("GIRL")
  106. 1060  ELIF P(.6) THEN
  107. 1070   SYMBOL("LAMB")
  108. 1080  ELIF P(.8) THEN
  109. 1090   SYMBOL("BEAR")
  110. 1100  ELSE 
  111. 1110   SYMBOL("TREE")
  112. 1120  ENDIF 
  113. 1130 ENDPROC NOUN
  114. 1140 //
  115. 1150 PROC REL'CLAUSE 
  116. 1160  SYMBOL("THAT")
  117. 1170  PREDICATE
  118. 1180 ENDPROC REL'CLAUSE
  119. 1190 //
  120. 1200 PROC PREDICATE 
  121. 1210  ADVERTIAL'OPTION
  122. 1220  VERB
  123. 1230  OBJECT
  124. 1240 ENDPROC PREDICATE
  125. 1250 //
  126. 1260 PROC ADVERTIAL'OPTION 
  127. 1270  // <ADVERTIAL OPTION>::=
  128. 1280  //    [0.2]<MODIFIER>▌<NOTHING>
  129. 1290  IF P(.2) THEN
  130. 1300   MODIFIER
  131. 1310  ELSE 
  132. 1320   NULL
  133. 1330  ENDIF 
  134. 1340 ENDPROC ADVERTIAL'OPTION
  135. 1350 //
  136. 1360 PROC MODIFIER 
  137. 1370  IF P(.33) THEN
  138. 1380   SYMBOL("ALWAYS")
  139. 1390  ELIF P(.67) THEN
  140. 1400   SYMBOL("OFTEN")
  141. 1410  ELSE 
  142. 1420   SYMBOL("NEVER")
  143. 1430  ENDIF 
  144. 1440 ENDPROC MODIFIER
  145. 1450 //
  146. 1460 PROC VERB 
  147. 1470  IF P(.25) THEN
  148. 1480   SYMBOL("SEES")
  149. 1490  ELIF P(.5) THEN
  150. 1500   SYMBOL("LIKES")
  151. 1510  ELIF P(.75) THEN
  152. 1520   SYMBOL("EATS")
  153. 1530  ELSE 
  154. 1540   SYMBOL("DREAMS ABOUT")
  155. 1550  ENDIF 
  156. 1560 ENDPROC VERB
  157. 1570 //
  158. 1580 PROC OBJECT 
  159. 1590  IF P(.8) THEN
  160. 1600   SUBSTANTIVE'GROUP
  161. 1610  ELSE 
  162. 1620   PERSONAL'PRONOUN'4
  163. 1630  ENDIF 
  164. 1640 ENDPROC OBJECT
  165. 1650 //
  166. 1660 PROC PERSONAL'PRONOUN'1 
  167. 1670  IF P(.25) THEN
  168. 1680   SYMBOL("HE")
  169. 1690  ELIF P(.5) THEN
  170. 1700   SYMBOL("SHE")
  171. 1710  ELIF P(.75) THEN
  172. 1720   SYMBOL("═ARY")
  173. 1730  ELSE 
  174. 1740   SYMBOL("╩IM")
  175. 1750  ENDIF 
  176. 1760 ENDPROC PERSONAL'PRONOUN'1
  177. 1770 //
  178. 1780 PROC PERSONAL'PRONOUN'4 
  179. 1790  IF P(.25) THEN
  180. 1800   SYMBOL("HIM")
  181. 1810  ELIF P(.5) THEN
  182. 1820   SYMBOL("HER")
  183. 1830  ELIF P(.75) THEN
  184. 1840   SYMBOL("═ARY")
  185. 1850  ELSE 
  186. 1860   SYMBOL("╩IM")
  187. 1870  ENDIF 
  188. 1880 ENDPROC PERSONAL'PRONOUN'4
  189. 1890 //
  190. 1900 PROC SYMBOL(X$) 
  191. 1910  PRINT X$+" ",
  192. 1920 ENDPROC SYMBOL
  193. 1930 //
  194. 1940 PROC TERM'SYMBOL 
  195. 1950  PRINT 
  196. 1960 ENDPROC TERM'SYMBOL
  197. 1970 //
  198. 1980 // *******************************
  199. 1990 // *    ADDITIONAL PROCS/FUNCS   *
  200. 2000 // *******************************
  201. 2010 //
  202. 2020 FUNC P(X) CLOSED
  203. 2030  RETURN RND(1,100)<X*100
  204. 2040 ENDFUNC P
  205. 2050 //
  206. 2060 PROC INFO 
  207. 2070  CLEARSCREEN
  208. 2080  PRINT 
  209. 2090  PRINT " ╨├╞╟"
  210. 2100  PRINT 
  211. 2110  PRINT " ╘HIS IS AN EXAMPLE OF A"
  212. 2120  PRINT 
  213. 2130  PRINT "    ╨ROBABLISTIC"
  214. 2140  PRINT "    ├ONTEXT"
  215. 2150  PRINT "    ╞REE"
  216. 2160  PRINT "    ╟RAMMAR"
  217. 2170  PRINT 
  218. 2180  PRINT " INSPIRED BY"
  219. 2190  PRINT 
  220. 2200  PRINT "    '═ARY HAD A LITTLE LAMB'"
  221. 2210  PRINT 
  222. 2220  PRINT " ╨RESS ANY KEY TO SEE A SENTENCE"
  223. 2230  PRINT " ╨RESS [STOP] TO STOP THE PRODUCTION"
  224. 2240  WAIT'KEY
  225. 2250  PRINT 
  226. 2260 ENDPROC INFO
  227. 2270 //
  228. 2280 PROC WAIT'KEY CLOSED
  229. 2290  WHILE KEY$>CHR$(0) DO NULL
  230. 2300  WHILE KEY$<=CHR$(0) DO NULL
  231. 2310 ENDPROC WAIT'KEY
  232. 2320 //
  233. 2330 PROC CLEARSCREEN 
  234. 2340  FOR X:=1 TO 25 DO PRINT 
  235. 2350 ENDPROC CLEARSCREEN
  236.